package middlewareWeb;
import java.util.*;

/**
 * Classe contenente un set di TaskDescriptor
 * @author myusy
 */
public class Workflow {
    private Vector<TaskDescriptor> tasks;
    private int id;

    /**
     * Costruttore della classe Workflow
     * @param id int che identifica il singolo Workflow
     * @param task Vector <TaskDescriptor> per inizializzare il Workflow con un set di oggetti TaskDescriptor
     */
    public Workflow(int id, Vector<TaskDescriptor> task){
        this.id = id;
        this.tasks = task;
    }

    /**
     * Metodo che restituisce l'intero set di TaskDescriptor
     * @return Vector<TaskDescriptor>
     */
    public Vector<TaskDescriptor> getTasks(){
        return tasks;
    }

     /**
      * Metodo che permette di assegnare al Workflow un intero set di taskDescriptor
      * @param val Vector <TaskDescriptor> che contiene il set di taskDescriptor
      */
    public void setTasks(Vector<TaskDescriptor> val){
        tasks = val;
    }

    /**
     *Metodo che permette di assegnare al Workflow un singolo oggetto TaskDescriptor
     * @param ts TaskDescriptor che contiene l'oggetto TaskDescriptor
     * @return int - intero che rappresenta l'indice del descrittore
     */
    public int addTask(TaskDescriptor ts){
        tasks.add(ts);
        return tasks.size()-1;
    }

    /**
     * Metodo che ritorna il primo oggetto TaskDescriptor eliminandolo dal Workflow
     * @return TaskDescriptor
     */
    public TaskDescriptor getTask(int index){
        TaskDescriptor task_prelevato;
        task_prelevato = tasks.elementAt(index);
        //tasks.remove(index);
        return task_prelevato;
    }

    /**
     * Metodo che assegna un id al Worflow
     * @param id int che contiene l'id del Workflow
     */
    public void setId(int id){
        this.id = id;
    }

    /**
     * Metodo che ritorna l'id del Workflow
     * @return int
     */
    public int getId(){
        return id;
    }
    /**
     * Metodo che l'oggetto Workflow sottoforma di stringa contenente tag XML
     * @return int
     */
    public String toXML(){
        String s= "<Workflow id="+this.id+">";
        int i=0;
        while ( i<tasks.size() ) {
            s+=tasks.elementAt(i++).toXML();
        }
        s+="</Workflow>";
        //System.out.println(s);
        return s;
    }
}
